home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / gfx / show / svoUtah22.lha / svoUtahRLE / source / SV_SuperVisor.c < prev    next >
C/C++ Source or Header  |  1995-04-14  |  5KB  |  168 lines

  1.  
  2.  /* SV_SuperVisor.c
  3.     - SuperVising (global exit) Functions for UtahRLE-Support -
  4.     (c) 1990-95 by Andreas R. Kleinert
  5.     Last changes : 14.04.1995
  6.  */
  7.  
  8. #include "svobject.h"
  9.  
  10. struct SVObjectHandle * __saveds __asm SVO_AllocHandle( register __a1 APTR future_a1);
  11. void __saveds __asm SVO_FreeHandle( register __a1 struct SVObjectHandle *SVObjectHandle_a1);
  12. void __saveds __asm SVO_CloseDisplay( register __a1 struct SVObjectHandle *SVObjectHandle_a1);
  13. void __saveds __asm SVO_FreeResources( register __a1 struct SVObjectHandle *SVObjectHandle_a1);
  14.  
  15. /* *************************************************** */
  16. /* *                             * */
  17. /* * SVO_AllocHandle : Free SVObjectHandle and more  * */
  18. /* *                             * */
  19. /* *************************************************** */
  20.  
  21. struct SVObjectHandle * __saveds __asm SVO_AllocHandle( register __a1 APTR future_a1)
  22. {
  23.  APTR future = future_a1;
  24.  
  25.  struct SuperViewBase *SuperViewBase = N;
  26.  struct SVDriverBase  *SVDriverBase  = N;
  27.  
  28.  struct SVObjectHandle *handle;
  29.  struct SVD_DriverNode *entry;
  30.  char open_name [256];
  31.  
  32.  handle = (APTR) AllocVec(sizeof(struct SVObjectHandle), (MEMF_CLEAR|MEMF_PUBLIC));
  33.  if(handle)
  34.   {
  35.    handle->ah_Type      = SV_SUBTYPE_NONE;
  36.    handle->ah_WriteMode = SV_SUBTYPE_NONE;
  37.    handle->ah_Medium    = AKO_MEDIUM_DISK; /* default */
  38.  
  39.    SuperViewBase = (APTR) OpenLibrary("superview.library", 2);
  40.    if(SuperViewBase)
  41.     {
  42.      if(LibVer(SuperViewBase) > 2)
  43.       {
  44.        if(!SVL_GetGlobalDriver(&entry, N))
  45.         {
  46.          strcpy(open_name, "LIBS:svdrivers/");
  47.          strcat(open_name, entry->svd_FileName);
  48.  
  49.          if(SVDriverBase = (APTR) OpenLibrary(open_name, SVD_VERSION))
  50.           {
  51.            if(handle->ah_SVDriverHandle = SVD_AllocHandle(N))
  52.             {
  53.              handle->ah_DriverBase   = SVDriverBase;
  54.              handle->ah_SVDriver     = entry;
  55.             }else CloseLibrary((APTR) SVDriverBase);
  56.           }
  57.         }
  58.  
  59.        CloseLibrary(SuperViewBase);
  60.       }
  61.     }
  62.   }
  63.  
  64.  return(handle);
  65. }
  66.  
  67. /* *************************************************** */
  68. /* *                             * */
  69. /* * SVO_FreeHandle : Free SVObjectHandle and more   * */
  70. /* *                             * */
  71. /* *************************************************** */
  72.  
  73. void __saveds __asm SVO_FreeHandle( register __a1 struct SVObjectHandle *SVObjectHandle_a1)
  74. {
  75.  struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;
  76.  struct SVDriverBase *SVDriverBase = N;
  77.  
  78.  SVO_CloseDisplay(SVObjectHandle);
  79.  SVO_FreeResources(SVObjectHandle);
  80.  
  81.  SVDriverBase = SVObjectHandle->ah_DriverBase;
  82.  if(SVDriverBase)
  83.   {
  84.    if(SVObjectHandle->ah_SVDriverHandle) SVD_FreeHandle(SVObjectHandle->ah_SVDriverHandle);
  85.  
  86.    CloseLibrary((APTR) SVDriverBase);
  87.  
  88.    SVObjectHandle->ah_DriverBase     = N;
  89.    SVObjectHandle->ah_SVDriverHandle = N;
  90.   }
  91.  
  92.  FreeVec(SVObjectHandle);
  93. }
  94.  
  95. /* *************************************************** */
  96. /* *                             * */
  97. /* * SVO_CloseDisplay : Close Display, ...           * */
  98. /* *                             * */
  99. /* *************************************************** */
  100.  
  101. void __saveds __asm SVO_CloseDisplay( register __a1 struct SVObjectHandle *SVObjectHandle_a1)
  102. {
  103.  struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;
  104.  struct SVDriverBase *SVDriverBase = N;
  105.  APTR msg;
  106.  
  107.  if(!SVObjectHandle) return;
  108.  
  109.  if(SVObjectHandle->ah_Screen)
  110.   {
  111.    if(SVObjectHandle->ah_Window)
  112.     {
  113.      while( msg = GetMsg(SVObjectHandle->ah_Window->UserPort) ) ReplyMsg(msg);
  114.  
  115.      CloseWindow(SVObjectHandle->ah_Window);
  116.     }
  117.  
  118.    CloseScreen(SVObjectHandle->ah_Screen);
  119.  
  120.    SVObjectHandle->ah_Window = N;
  121.    SVObjectHandle->ah_Screen = N;
  122.   }
  123.  
  124.  SVDriverBase = SVObjectHandle->ah_DriverBase;
  125.  if(SVDriverBase) if(SVObjectHandle->ah_SVDriverHandle) SVD_CloseDisplay(SVObjectHandle->ah_SVDriverHandle);
  126. }
  127.  
  128. /* *************************************************** */
  129. /* *                             * */
  130. /* * SVO_FreeResources : Free Memory and more        * */
  131. /* *                             * */
  132. /* *************************************************** */
  133.  
  134. void __saveds __asm SVO_FreeResources( register __a1 struct SVObjectHandle *SVObjectHandle_a1)
  135. {
  136.  struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;
  137.  struct SVDriverBase *SVDriverBase = N;
  138.  
  139.  if(!SVObjectHandle) return;
  140.  
  141.  if(SVObjectHandle->ah_filehandle_source) Close(SVObjectHandle->ah_filehandle_source);
  142.  if(SVObjectHandle->ah_filehandle_dest)   Close(SVObjectHandle->ah_filehandle_dest);
  143.  
  144.  if(SVObjectHandle->ah_FILE_source) fclose(SVObjectHandle->ah_FILE_source);
  145.  if(SVObjectHandle->ah_FILE_dest)   fclose(SVObjectHandle->ah_FILE_dest);
  146.  
  147.  if(SVObjectHandle->ah_ramhandle)         SVSUP_FreeMemList(SVObjectHandle->ah_ramhandle);
  148.  
  149.  SVDriverBase = SVObjectHandle->ah_DriverBase;
  150.  if(SVDriverBase) if(SVObjectHandle->ah_SVDriverHandle) SVD_FreeResources(SVObjectHandle->ah_SVDriverHandle);
  151.  
  152.  if(SVObjectHandle->ah_SV_GfxBuffer)
  153.   {
  154.    if(SVObjectHandle->ah_SV_GfxBuffer->svgfx_Buffer) FreeVec(SVObjectHandle->ah_SV_GfxBuffer->svgfx_Buffer);
  155.  
  156.    FreeVec(SVObjectHandle->ah_SV_GfxBuffer);
  157.   }
  158.  
  159.  SVObjectHandle->ah_filehandle_source = N;
  160.  SVObjectHandle->ah_filehandle_dest   = N;
  161.  
  162.  SVObjectHandle->ah_FILE_source       = N;
  163.  SVObjectHandle->ah_FILE_dest         = N;
  164.  
  165.  SVObjectHandle->ah_ramhandle         = N;
  166.  SVObjectHandle->ah_SV_GfxBuffer      = N;
  167. }
  168.